用來管理及發送廣播
實例化出 LocalBroadcastManager
getInstance (context: Context)
var broadcast= LocalBroadcastManager.getInstance(this)
發送廣播
sendBroadcast (intent: Intent)
fun sendBroadcast(message: String?) {
val intent = Intent("MyMessage") // "MyMessage" 為自定義的 Intent action 名稱
intent.putExtra("message", message)
broadcast.sendBroadcast(intent)
}
註冊要接收特定廣播的廣播接收器
registerReceiver (receiver: BroadcastReceive, filter: IntentFilter)
reciever:要接收該特定廣播的接收器實例
filter:指定要接收的廣播 Intent action 名稱
val reciever = Reciever(this) // Reciever 為自定義的廣播接收器類別
override fun onStart() {
super.onStart()
LocalBroadcastManager.getInstance(this).registerReceiver(reciever, IntentFilter("MyMessage"))
}
取消註冊並刪除已被註冊過的廣播接收器
unregisterReceiver (receiver: BroadcastReceiver)
override fun onStop() {
super.onStop()
LocalBroadcastManager.getInstance(this).unregisterReceiver(reciever)
}
用來接收廣播的接收器類別
要使用此類別需要先自定義類別繼承此類別
class Receiver(val myContext: Context):BroadcastReceiver() { }
接收廣播的方法
onReceive (context: Context, intent: Intent)
context:接收器執行的 Context
intent:接收進來的廣播 intent
override fun onReceive(context: Context?, intent: Intent?) {
//自定義的方法,用來將接收的廣播用來發出通知
manager.notify(0, builder.build())
//自定義的方法,用來將接收的廣播用來彈出對話框
showDialog(intent)
}
關於發出通知的功能可以參考 Day 15 內容
關於彈出對話框的功能將在下篇介紹
Android
Kotlin
LocalBroadcastManager
BroadcastReceiver